import java.nio.channels.SelectableChannel;
import java.util.List;

/**
 * @author zhangshuai
 * @version V1.0
 * @Project Java2_26
 * @Package PACKAGE_NAME
 * @Description:
 * @Date 2025/5/14 16:56
 */

public class InterfaceTest {

    //接口：一种引用数据类型，是一种特殊的抽象类，里面都是抽象方法，还可以有常量
    //接口的定义：interface  接口名{}
    //接口是一组功能的规范
    public static void main(String[] args) {
        Plane plane = new Plane();
        Superman superman = new Superman();
        Sparrow sparrow = new Sparrow();
        Stone stone = new Stone();

        Flyable[] flyables = {plane,superman,sparrow,stone};
        //数组遍历 foreach    for(数据类型 变量名:数组名){}
        for (Flyable flyable : flyables) {
            flyable.fly();
        }

       //遍历数组，index 索引 从0开始
        //数组的长度 数组名.length  0 1 2 3
        /*for (int i = 0; i < flyables.length; i++) {
           flyables[i].fly();
        }*/

    }

}

/*/**
 * 举办一个飞行大赛。
 * 所有会飞行的对象都能参加。
 * 需要使用一个数组来管理所有的参赛者。
 * 参加的对象：飞机、超人、麻雀、石头。
 */
interface Flyable {
    //接口中的方法都是抽象方法
    //接口中的方法都是public abstract修饰的
    //常量
     int MAX_SPEED = 5000;

    //飞行方法 定义的抽象方法
     void fly();
}
//接口是一种特殊的抽象类，接口中的抽象方法必须要去实现，用implements关键字实现
//飞机类
class Plane implements Flyable{
    @Override
    public void fly() {
        System.out.println("飞机飞行"+MAX_SPEED);
    }
}
//超人类
class Superman implements Flyable{
    @Override
    public void fly() {
        System.out.println("超人飞行"+MAX_SPEED/10);
    }
}
//麻雀类
class Sparrow implements Flyable{

    @Override
    public void fly() {
        System.out.println("麻雀飞行"+MAX_SPEED/100);
    }
}
//石头类
class Stone implements Flyable{
    @Override
    public void fly() {
        System.out.println("石头飞行"+MAX_SPEED/1000);
    }
}